package main

import "fmt"

func main() {
	fmt.Println(apply(func(i int, i2 int) int {
		return i * i2
	}, 5, 6))

	// 指针传递
	a, b := 5, 1
	sawp1(&a, &b)
	fmt.Println(a, b)
	// 建议使用
	v, k := 7, 10
	v, k = swap2(v, k)
	fmt.Println(v, k)
}

// 指针传递可以实现引用传递
func sawp1(a, b *int) {
	*a, *b = *b, *a
}

func swap2(a, b int) (int, int) {
	return b, a
}

// 定义一个函数式
func apply(op func(int, int) int, a, b int) int {
	return op(a, b)
}

func add(a, b int) int {
	return a * b
}
